// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.google.zxing.common; // Referenced classes of package com.google.zxing.common: // BitArray public final class BitMatrix { private final int a; private final int b; private final int c; private final int d[]; public BitMatrix(int i) { this(i, i); } public BitMatrix(int i, int j) { if (i < 1 || j < 1) { throw new IllegalArgumentException("Both dimensions must be greater than 0"); } else { a = i; b = j; c = i + 31 >> 5; d = new int[j * c]; return; } } public void clear() { int i = d.length; for (int j = 0; j < i; j++) { d[j] = 0; } } public boolean equals(Object obj) { if (obj instanceof BitMatrix) goto _L2; else goto _L1 _L1: BitMatrix bitmatrix; return false; _L2: if (a == (bitmatrix = (BitMatrix)obj).a && b == bitmatrix.b && c == bitmatrix.c && d.length == bitmatrix.d.length) { int i = 0; label0: do { label1: { if (i >= d.length) { break label1; } if (d[i] != bitmatrix.d[i]) { break label0; } i++; } } while (true); } if (true) goto _L1; else goto _L3 _L3: return true; } public void flip(int i, int j) { int k = j * c + (i >> 5); int ai[] = d; ai[k] = ai[k] ^ 1 << (i & 0x1f); } public boolean get(int i, int j) { int k = j * c + (i >> 5); return (1 & d[k] >>> (i & 0x1f)) != 0; } public int[] getBottomRightOnBit() { int i; for (i = -1 + d.length; i >= 0 && d[i] == 0; i--) { } if (i < 0) { return null; } int j = i / c; int k = i % c << 5; int l = d[i]; int i1; for (i1 = 31; l >>> i1 == 0; i1--) { } return (new int[] { k + i1, j }); } public int[] getEnclosingRectangle() { int j; int k; int l; int i1; int j1; int i = a; j = b; k = i; l = -1; i1 = -1; j1 = 0; _L12: if (j1 >= b) goto _L2; else goto _L1 _L1: int i2 = 0; _L11: if (i2 >= c) goto _L4; else goto _L3 _L3: int j2; j2 = d[i2 + j1 * c]; if (j2 == 0) { break MISSING_BLOCK_LABEL_292; } if (j1 < j) { j = j1; } if (j1 > i1) { i1 = j1; } if (i2 * 32 >= k) goto _L6; else goto _L5 _L5: int i4; for (i4 = 0; j2 << 31 - i4 == 0; i4++) { } if (i4 + i2 * 32 >= k) goto _L6; else goto _L7 _L7: int k2 = i4 + i2 * 32; _L14: if (31 + i2 * 32 <= l) goto _L9; else goto _L8 _L8: int k3; for (k3 = 31; j2 >>> k3 == 0; k3--) { } if (k3 + i2 * 32 <= l) goto _L9; else goto _L10 _L10: int l2; int i3; int j3; int l3 = k3 + i2 * 32; l2 = j; i3 = l3; j3 = i1; _L13: i2++; i1 = j3; l = i3; j = l2; k = k2; goto _L11 _L4: j1++; goto _L12 _L2: int k1 = l - k; int l1 = i1 - j; if (k1 < 0 || l1 < 0) { return null; } else { return (new int[] { k, j, k1, l1 }); } _L9: l2 = j; i3 = l; j3 = i1; goto _L13 _L6: k2 = k; goto _L14 k2 = k; l2 = j; i3 = l; j3 = i1; goto _L13 } public int getHeight() { return b; } public BitArray getRow(int i, BitArray bitarray) { if (bitarray == null || bitarray.getSize() < a) { bitarray = new BitArray(a); } int j = i * c; for (int k = 0; k < c; k++) { bitarray.setBulk(k << 5, d[j + k]); } return bitarray; } public int[] getTopLeftOnBit() { int i; for (i = 0; i < d.length && d[i] == 0; i++) { } if (i == d.length) { return null; } int j = i / c; int k = i % c << 5; int l = d[i]; int i1; for (i1 = 0; l << 31 - i1 == 0; i1++) { } return (new int[] { k + i1, j }); } public int getWidth() { return a; } public int hashCode() { int i = 31 * (31 * (31 * a + a) + b) + c; int ai[] = d; int j = ai.length; for (int k = 0; k < j; k++) { i = ai[k] + i * 31; } return i; } public void set(int i, int j) { int k = j * c + (i >> 5); int ai[] = d; ai[k] = ai[k] | 1 << (i & 0x1f); } public void setRegion(int i, int j, int k, int l) { int i1; int j1; if (j < 0 || i < 0) { throw new IllegalArgumentException("Left and top must be nonnegative"); } if (l < 1 || k < 1) { throw new IllegalArgumentException("Height and width must be at least 1"); } i1 = i + k; j1 = j + l; if (j1 > b || i1 > a) { throw new IllegalArgumentException("The region must fit inside the matrix"); } _L3: if (j < j1) { int k1 = j * c; int l1 = i; while (l1 < i1) { int ai[] = d; int i2 = k1 + (l1 >> 5); ai[i2] = ai[i2] | 1 << (l1 & 0x1f); l1++; } } else { return; } if (true) goto _L2; else goto _L1 _L2: j++; if (true) goto _L3; else goto _L1 _L1: } public void setRow(int i, BitArray bitarray) { System.arraycopy(bitarray.getBitArray(), 0, d, i * c, c); } public String toString() { StringBuilder stringbuilder = new StringBuilder(b * (1 + a)); for (int i = 0; i < b; i++) { int j = 0; while (j < a) { String s; if (get(j, i)) { s = "X "; } else { s = " "; } stringbuilder.append(s); j++; } stringbuilder.append('\n'); } return stringbuilder.toString(); } }